<?php

/**
 * Model MyAR
 *
 * @author luubk
 * @since Jan 14, 2013 - 2:40:14 PM
 */
class MyAR extends CActiveRecord
{

    public $activity_desc = "";
    public $log_activity = TRUE;

    public function getTableName()
    {
        $ret = $this->tableName();
        $ret = str_replace(Yii::app()->db->tablePrefix, "", $ret);
        $ret = str_replace("{{", "", $ret);
        $ret = str_replace("}}", "", $ret);

        return strtolower($ret);
    }

    function afterSave()
    {
        parent::afterSave();

        // Nếu không ghi Hoạt động thì bỏ qua
        if (!$this->log_activity)
            return TRUE;

        /**
         * Sau khi lưu bản ghi vào csdl, lưu hành động này vào bảng Activity
         */
        $act = new Activity();
        $act->object_id = $this->primaryKey == NULL ? NULL : $this->primaryKey;
        $act->object_type = strtolower($this->getTableName());
        $act->object_name = strtolower($this->getObjectName());
        $act->type = $this->isNewRecord ? 'create' : 'update';
        $act->created_at = time();
        $act->description = $this->activity_desc;
        $act->ip = (Yii::app()->request->userHostAddress) ? Yii::app()->request->userHostAddress : NULL;
        $act->url = (isset(Yii::app()->request->url)) ? Yii::app()->request->url : NULL;
        if (isset(Yii::app()->controller->user))
            if (Yii::app()->controller->user != NULL)
            {
                $act->actor_id = Yii::app()->user->id;
                $act->actor_type = Yii::app()->controller->user->getTableName();
            }
        $act->save();
    }

    function afterDelete()
    {
        parent::afterDelete();

        // Nếu không ghi Hoạt động thì bỏ qua
        if (!$this->log_activity)
            return TRUE;

        /**
         * Sau khi xóa bản ghi, lưu hành động này vào bảng Activity
         */
        $act = new Activity();
        $act->object_id = $this->primaryKey == NULL ? NULL : $this->primaryKey;
        $act->object_type = $this->getTableName();
        $act->object_name = $this->getObjectName();
        $act->type = 'delete';
        $act->created_at = time();
        $act->description = $this->activity_desc;
        $act->ip = Yii::app()->request->userHostAddress;
        $act->url = Yii::app()->request->url;
        $act->actor_id = Yii::app()->user->id;
        $act->actor_type = Yii::app()->controller->user->getTableName();
        $act->save();
    }

    function getObjectName()
    {
        if (property_exists($this, 'name'))
            return $this->name;
        elseif (property_exists($this, 'id'))
            return $this->id;
    }

}

/** 
 * End file MyAR
 */
